/*
 *  Copyright (c) 2010 Yawning <yawninglol at gmail.com>
 *  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   * Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   * Neither the name of the Mew Developers nor the
 *     names of its contributors may be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 *  THE POSSIBILITY OF SUCH DAMAGE.
 */

package yawning.mew;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

/**
 * Proc effect data type.
 *
 * @author Yawning <yawninglol at gmail.com>
 */
public class ProcEffect {
    // Proc trigger.
    public enum Trigger {
        USER,
        POTION,
        WHITE,
        WHITECRIT,
        YELLOW,
        YELLOWCRIT,
        RANGEDYELLOW,
        RANGEDYELLOWCRIT,
        DOT,
        DOTCRIT
    }

    public ProcEffect() {
    }

    public String name;
    public EnumSet<Trigger> triggers;
    public Map<Effect,Integer> mEffects = new HashMap<Effect,Integer>();

    public double rate = 0.0;
    public double ppm = 0;

    // Proc ICD/Duration.
    public int buffCooldown = 0;
    public int buffLinkedCooldown = 0;
    public int buffDuration = 0;
    public int buffStackMax = 0;

    public enum Effect {
    	SPELL_ID,
    	STRENGTH,
    	AGILITY,
    	ATTACK_POWER,
    	HASTE_RATING,
    	CRIT_RATING,
    	HIT_RATING,
    	EXPERTISE_RATING,
    	MASTERY_RATING,
    	DODGE_RATING,
    	PARRY_RATING,
    	WEAPON_DAMAGE,
    	PHYSICAL_DAMAGE,
    	SPELL_DAMAGE
    };

    public void set(Effect p, int i) {
    	mEffects.put(p, i);
    }

    public int get(Effect p) {
    	if (mEffects.containsKey(p)) return mEffects.get(p);
    	else return 0;
    }
}

